/**
 * @description vue.config.js全局配置
 */
const path = require('path')
const {
  /* baseURL, */
  publicPath,
  assetsDir,
  outputDir,
  lintOnSave,
  transpileDependencies,
  title,
  devPort,
  providePlugin,
  modifyVars
} = require('./src/config')
const { version } = require('./package.json')
const Webpack = require('webpack')
const FileManagerPlugin = require('filemanager-webpack-plugin')
const dayjs = require('dayjs')
const date = dayjs().format('YYYY_M_D')
const time = dayjs().format('YYYY-M-D HH:mm:ss')
process.env.VUE_APP_TITLE = title || 'vue-admin'
process.env.VUE_APP_UPDATE_TIME = time
process.env.VUE_APP_VERSION = version

// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;  //性能分析

const resolve = dir => {
  return path.join(__dirname, dir)
}

module.exports = {
  publicPath,
  assetsDir,
  outputDir,
  lintOnSave,
  transpileDependencies,

  devServer: {
    hot: true,
    port: devPort,
    open: false,
    disableHostCheck: true,
    noInfo: false,
    overlay: {
      warnings: true,
      errors: true
    },
    headers: {
      'Access-Control-Allow-Origin': '*'
    },
    proxy: {
      // jtqg-大屏服务
      '^/jtqg-screen': {
        // target: 'http://172.16.130.107:8076/api/screen',
        target: 'http://jtqg-test.gandongyun.cn/gateway-jtqg/api/screen', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/api/screen', // 生产
        ws: false,
        pathRewrite: {
          '^/jtqg-screen': ''
        }
      },
      // jtqg-智能侦测服务
      '^/jtqg-detection': {
        // target: 'http://172.16.110.82:8056/api/detection',
        target: 'http://jtqg-test.gandongyun.cn/gateway-jtqg/api/detection', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/api/detection', // 生产
        ws: false,
        pathRewrite: {
          '/jtqg-detection': ''
        }
      },
      // jtqg-系统管理字典服务
      '^/jtqg-xtgl': {
        // target: 'http://192.168.2.61:8070/xtgl',
        target: 'http://jtqg-test.gandongyun.cn/gateway-jtqg/xtgl', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/xtgl', // 生产
        ws: false,
        pathRewrite: {
          '^/jtqg-xtgl': ''
        }
      },
      // jtqg 认证中心
      '^/jtqg-auth': {
        // target: 'http://172.16.130.176:8092/auth',
        target: 'http://jtqg-test.gandongyun.cn/gateway-jtqg/auth', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/auth', // 生产
        ws: false,
        pathRewrite: {
          '^/jtqg-auth': ''
        }
      },
      // jtqg-大屏管理
      '^/jtqg-manage': {
        // target: 'http://172.16.130.176:8092/auth',
        target: 'http://jtqg-test.gandongyun.cn/gateway-jtqg/api/screen/manage', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/auth', // 生产
        ws: false,
        pathRewrite: {
          '^/jtqg-manage': ''
        }
      },
      // ===================================================
      // ===============华丽的分割线========================
      // ===================================================
      // sjk大屏服务
      '^/sjk-screen': {
        // target: 'http://172.16.110.82:8076/api/screen',
        target: 'http://jtqg-test.gandongyun.cn/gateway-sjk/api/screen', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/api/screen', // 生产
        ws: false,
        pathRewrite: {
          '^/sjk-screen': '/'
        }
      },
      // sjk智能侦测服务
      '^/sjk-detection': {
        // target: 'http://172.16.110.82:8056/api/detection',
        target: 'http://jtqg-test.gandongyun.cn/gateway-sjk/api/detection', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/api/detection', // 生产
        ws: false,
        pathRewrite: {
          '/sjk-detection': ''
        }
      },
      // sjk 系统管理字典服务
      '^/sjk-xtgl': {
        // target: 'http://192.168.2.61:8070/xtgl',
        target: 'http://jtqg-test.gandongyun.cn/gateway-sjk/xtgl', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/xtgl', // 生产
        ws: false,
        pathRewrite: {
          '^/sjk-xtgl': ''
        }
      },
      // sjk 认证中心
      '^/sjk-auth': {
        // target: 'http://172.16.130.176:8092/auth',
        target: 'http://jtqg-test.gandongyun.cn/gateway-sjk/auth', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/auth', // 生产
        ws: false,
        pathRewrite: {
          '^/sjk-auth': ''
        }
      },
      // sjk-大屏管理  待验证
      '^/sjk-manage': {
        // target: 'http://172.16.130.176:8092/auth',
        target: 'http://jtqg-test.gandongyun.cn/gateway-sjk/api/screen-manage', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/auth', // 生产
        ws: false,
        pathRewrite: {
          '^/sjk-manage': ''
        }
      },
      // ======================================
      // ======================================
      // ======================================
      // 静态文件
      '^/api-staticData': {
        target: 'http://jtqg-test.gandongyun.cn/staticData', // 测试
        // target: 'http://jtqgjsapi.gandongyun.cn/staticData', // 生产
        ws: false,
        pathRewrite: {
          '^/api-staticData': ''
        }
      },
      //  综合分析服务
      '^/zhfx-api': {
        // target: 'http://jtqg-test.gandongyun.cn:8092/gateway/zhfx', // 测试
        target: 'http://jtqg.gandongyun.cn/gateway/zhfx', // 测试
        ws: false,
        pathRewrite: {
          '^/zhfx-api': ''
        }
      },
      //  宁靖盐桥面检测
      '^/qmjc-api': {
        target: 'http://172.16.110.67:8098/njyindividuation', // 测试
        // target: 'http://jtqg.gandongyun.cn/gateway/zhfx', // 测试
        ws: false,
        pathRewrite: {
          '^/qmjc-api': ''
        }
      }
    }
  },
  configureWebpack() {
    return {
      resolve: {
        // 配置alias简称
        alias: {
          '@': resolve('src'),
          '*': resolve(''),
          // 业务组件子模块 快捷入口
          bComponent: resolve('src/views/business-component'),
          // 母版子模块 快捷入口
          motherSet: resolve('src/views/mother-set')
        }
      },
      // plugins: [ new BundleAnalyzerPlugin()]
      plugins: [
        // require('unplugin-vue-define-options/webpack')(),
      ]
    }
  },
  // 对内部的webpack配置(比如修改、增加Loader选项)(链式操作).
  chainWebpack(config) {
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear()

    svgRule
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()

    config.when(process.env.NODE_ENV === 'development', config => {
      config.devtool('source-map')
    })
    config.when(process.env.NODE_ENV !== 'development', config => {
      config.performance.set('hints', false)
      config.devtool('none')
      config.optimization.splitChunks({
        chunks: 'all',
        cacheGroups: {
          libs: {
            name: 'vue-admin-libs',
            test: /[\\/]node_modules[\\/]/,
            priority: 10,
            chunks: 'initial'
          }
        }
      })
      // config.plugin('banner').end()
      config.module
        .rule('images')
        // .use('image-webpack-loader')
        // .loader('image-webpack-loader')
        // .options({
        //   bypassOnDebug: true
        // })
        .end()
    })
  },
  runtimeCompiler: true,
  productionSourceMap: false,
  css: {
    requireModuleExtension: true,
    sourceMap: true,
    // 全局样式
    loaderOptions: {
      less: {
        lessOptions: {
          javascriptEnabled: true,
          modifyVars
        }
      }
    }
  }
}
